package com.ruoyi.system.domain.vo;

import com.ruoyi.common.utils.StringUtils;

/**
 * 路由显示信息
 *
 * @author ruoyi
 */
public class MetaVo {
    /**
     * 设置该路由在侧边栏和面包屑中展示的名字
     */
    private String title;

    /**
     * 设置该路由的图标，对应路径src/assets/icons/svg
     */
    private String icon;

    /**
     * 设置为true，则不会被 <keep-alive>缓存
     */
    private boolean noCache;

    /**
     * 内链地址（http(s)://开头）
     */
    private String link;

    /**
     * 无参构造函数
     */
    public MetaVo() {
    }

    /**
     * 构造函数：初始化标题和图标
     *
     * @param title 路由标题
     * @param icon  路由图标
     */
    public MetaVo(String title, String icon) {
        this.title = title;
        this.icon = icon;
    }

    /**
     * 构造函数：初始化标题、图标和缓存标志
     *
     * @param title   路由标题
     * @param icon    路由图标
     * @param noCache 是否不缓存
     */
    public MetaVo(String title, String icon, boolean noCache) {
        this.title = title;
        this.icon = icon;
        this.noCache = noCache;
    }

    /**
     * 构造函数：初始化标题、图标和内链地址
     *
     * @param title 路由标题
     * @param icon  路由图标
     * @param link  内链地址
     */
    public MetaVo(String title, String icon, String link) {
        this.title = title;
        this.icon = icon;
        this.link = link;
    }

    /**
     * 构造函数：初始化标题、图标、缓存标志和内链地址
     *
     * @param title   路由标题
     * @param icon    路由图标
     * @param noCache 是否不缓存
     * @param link    内链地址
     */
    public MetaVo(String title, String icon, boolean noCache, String link) {
        this.title = title;
        this.icon = icon;
        this.noCache = noCache;
        // 只有当link是合法的http(s)链接时才设置
        if (StringUtils.ishttp(link)) {
            this.link = link;
        }
    }

    /**
     * 获取是否不缓存的标志
     *
     * @return 是否不缓存
     */
    public boolean isNoCache() {
        return noCache;
    }

    /**
     * 设置是否不缓存
     *
     * @param noCache 是否不缓存
     */
    public void setNoCache(boolean noCache) {
        this.noCache = noCache;
    }

    /**
     * 获取路由标题
     *
     * @return 路由标题
     */
    public String getTitle() {
        return title;
    }

    /**
     * 设置路由标题
     *
     * @param title 路由标题
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * 获取路由图标
     *
     * @return 路由图标
     */
    public String getIcon() {
        return icon;
    }

    /**
     * 设置路由图标
     *
     * @param icon 路由图标
     */
    public void setIcon(String icon) {
        this.icon = icon;
    }

    /**
     * 获取内链地址
     *
     * @return 内链地址
     */
    public String getLink() {
        return link;
    }

    /**
     * 设置内链地址
     *
     * @param link 内链地址
     */
    public void setLink(String link) {
        this.link = link;
    }
}
